home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The CICA Windows Explosion!
/
The CICA Windows Explosion! - Disc 2.iso
/
programr
/
mathstud.zip
/
COSW.M
< prev
next >
Wrap
Text File
|
1993-03-23
|
1KB
|
62 lines
function y=cosw(npoints, f0, df, ph0)
%y=cosw(num_of_points, num_of_cycles, delta_cycles, initial_phase)
%create frequency hopping cosine wave composed of segements of linear
%FM cosine waves
%
%num_of_points - number of points in each segment
%f0 - inital frequency
%df - frequency deviation
%ph0 - initial phase
%
%Example: cosw(256, 2, 3) generates a linear FM signal
% S.Halevy 7/31/92
% Copyright (c) 1992 by the MathWizards
if nargin < 1
error('insufficient arguments')
end
npoints=npoints(:); % make sure it is a col vector
[mp,np]=size(npoints);
if nargin < 4
ph0=zeros(mp,np); % zero initial phase - radians
else
ph0=ph0(:);
[m0,n0]=size(ph0);
if m0 ~= mp | n0 ~= np
error('initial phase - dimension error')
end
end
if nargin < 3
df=zeros(mp,np); % no frequency deviation
else
df=df(:);
[m0,n0]=size(df);
if m0 ~= mp | n0 ~= np
error('frequency deviation - dimension error')
end
end
if nargin < 2
f0=ones(mp,np); % single cycle
else
f0=f0(:);
[m0,n0]=size(f0);
if m0 ~= mp | n0 ~= np
error('cycles - dimension error')
end
end
y=[];
pi2=atan(1.0)*8;
for i1=1:mp
n = npoints(i1);
t = (0:(n-1))/n; % time
ph1 = (f0(i1)+0.5*df(i1)*t).*t; % phase
ph1 -= floor(ph1); % reduce roundoff errors
y=[y cos(pi2*ph1+ph0(i1))];
end